/**
* 在这里定义和用户相关的路由处理函数，供 /router/user.js 模块进行调用
*/
// 注册用户的处理函数
//导入数据库模块
const db=require('../db/index');
//用来处理对用户密码加密
const bcrypt = require('bcryptjs');

// const express=require('express');
// const app=express();

const config=require('../config')

//导入jsonwebtoken
const jwt=require('jsonwebtoken');


//导入session中间件
// const session=require('express-session');

// //配置session中间件
// app.use(session({
//   secret:'keyboard cat',
//   resave:false,
//   saveUninitialized:true
// }))



exports.regUser = (req, res) => {
  //获取客户端提交的用户信息
  const userinfo=req.body;
  // console.log(userinfo);
  //对表单的数据进行合法性的判断
  if(!userinfo.username||!userinfo.password){
    return res.cc('用户名或者密码不合法');
  }
  //定义SQL语句 来 看看用户名是否重复
  const sql='select * from ev_users where username=?';
  db.query(sql,[userinfo.username],(err,result)=>{
    if(err){
      return res.cc(err)
    }
    //用户名被占用
    if(result.length>0){
      return res.cc('用户名被占用，请更换其他用户名');
    }
    //result=0，该用户名未被注册
    userinfo.password = bcrypt.hashSync(userinfo.password, 10)
    //添加新用户
    const insertsql='insert into ev_users set ?';
    db.query(insertsql,{username:userinfo.username,password:userinfo.password},(err,result)=>{
      if(err){
        return res.cc(err);
      }
      if(result.affectedRows!==1){
        return res.cc('注册失败');
      }
      res.cc('注册成功！', 0);
    })
  })
 
  }
// 登录的处理函数
exports.login = (req, res) => {
  //接受表单数据
  const userinfo=req.body;
  const sql='select * from ev_users where username=?';
  db.query(sql,userinfo.username,(err,result)=>{
    if(err){
      return res.cc(err);
    }
    if(result.length!==1){
      return res.cc('登陆失败')
    }
    //接下来可以判断用户名对应的密码与数据库中的是否一致
    // const compareResult=bcrypt.compareSync(userinfo.password,result[0].password);
    // if(!compareResult){
    //   return res.cc('登陆失败');
    // }
    const user = { ...result[0], password: '', user_pic: '' }
    //登陆成功，生成Token字符串
    //添加自定义变量存储用户信息
    const tokenStr=jwt.sign(user,config.secretkey,{expiresIn:'10h'});
    res.send({
      status:0,
      message:'登陆成功',
      //jwt.sign()三个参数：用户信息对象，加密密钥，配置对象
      token:'Bearer '+tokenStr
    })
  })
}